/*
考虑降低时间复杂度：‘点到黑洞中心的距离’等反复用到的值可以存起来
判断直线是否经过黑洞中，如果用‘到黑洞中心的距离’来判断，要注意三种情况
1、大于r，必然不经过黑洞；
2、小于r，但是依然不经过黑洞；
3、小于r，且经过黑洞。
第2点可以通过钝角来判断。
*/
#include <bits/stdc++.h>

using namespace std;

int BlackHole[101],r,m,n;
int arr[2001][101];
double arr_dist[2001][2001],ar,br,ab;
double arr_qx[2001],arr_tangle[2001],arr_toblack[2001];

double f_js_0(int a[],int b[]){
    double ret=0;
    for (int i = 0; i < n; ++i)
    {
        ret+=pow(a[i]-b[i],2);
    }
    return sqrt(ret);
}

double f_js_1(int i,int j){
    double ret=0,angle;
    angle=acos((ar*ar+br*br-ab*ab)/(2*ar*br));
    angle-=arr_tangle[i];angle-=arr_tangle[j];
    ret+=arr_qx[i];ret+=arr_qx[j];
    ret+=r*angle;

    return ret;
}

int judge(){
    int ret=1;
    double tdist,s,p;
    p=(ab+ar+br)/2;s=sqrt(p*(p-ab)*(p-ar)*(p-br));
    tdist=(s*2)/ab;
    if(tdist<r&&(ar*ar+ab*ab-br*br>0)&&(br*br+ab*ab-ar*ar>0))ret=0;
    return ret;
}

void init(){
    double x;
    for (int i = 0; i < m; ++i)
    {
        x=f_js_0(arr[i],BlackHole);
        arr_toblack[i]=x;
        if(x>r){
            double cos=r/x;
            arr_tangle[i]=acos(cos);
            arr_qx[i]=sin(acos(cos))*x;
        }
    }
}

int main(int argc, char const *argv[])
{
    scanf("%d%d%d",&n,&m,&r);
    for(int i=0;i<n;i++)scanf("%d",&BlackHole[i]);
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            scanf("%d",&arr[i][j]);
        }
    }
    init();
    for (int i = 0; i < m; ++i)
    {
        for (int j = i+1; j < m; ++j)
        {
            double tmp=0;
            ab=f_js_0(arr[i],arr[j]);
            ar=arr_toblack[i];
            br=arr_toblack[j];
            if(judge()){
                tmp=ab;
            }else{
                tmp=f_js_1(i,j);
            }
//            printf("i=%d j=%d tmp=%.12f\n",i,j,tmp);
            arr_dist[i][j]=tmp;
            arr_dist[j][i]=tmp;
        }
    }

    for (int i = 0; i < m; ++i)
    {
    	double ans=0;
        for (int j = 0; j < m; ++j)
        {
            ans+=arr_dist[i][j];
        }
        printf("%.14f\n", ans);
    }
    return 0;
}